﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;
using Sispe.Repository;
using Microsoft.Practices.Unity;

namespace Sispe.BussinesLogic
{
    public class DerechoHabienteBL:IDerechoHabienteBL
    {
        [Dependency]
        public IDerechoHabienteRepository derHabRepos { get; set; }

        public List<DERECHO_HABIENTE> GetAllFromDerechoHabientes()
        {
            return derHabRepos.GetAllFromDerechoHabientes();
        }

        public List<DERECHO_HABIENTE> GetFromDerechoHabienteByIdTrabajador(int idtrabajador)
        {
            return derHabRepos.GetFromDerechoHabienteByIdTrabajador(idtrabajador);
        }

        public List<DERECHO_HABIENTE> GetFromDerechoHabienteByDni(string dni)
        {
            return derHabRepos.GetFromDerechoHabienteByDni(dni);
        }

        public List<DERECHO_HABIENTE> GetFromDerechoHabienteByDescripcion(string descripcion)
        {
            return derHabRepos.GetFromDerechoHabienteByDescripcion(descripcion);
        }

        public void RegistrarDerechoHabiente(DERECHO_HABIENTE derechohabiente)
        {
            var msg = "";

            var ok = derechohabiente.Validate(out msg);
            if (ok)
            {
                derHabRepos.RegistrarDerechoHabiente(derechohabiente);
            }
            else
            {
                throw new Exception(msg);
            }
        }

        public void ModificarDerechoHabiente(DERECHO_HABIENTE derechohabiente)
        {
            var msg = "";

            var ok = derechohabiente.Validate(out msg);
            if (ok)
            {
                derHabRepos.ModificarDerechoHabiente(derechohabiente);
            }
            else
            {
                throw new Exception(msg);
            }
             
        }

        public DERECHO_HABIENTE GetFromDerechoHabienteById(int id)
        {
            return derHabRepos.GetFromDerechoHabienteById(id);
        }


        public void RemoveDerechoHabiente(int id)
        {
            derHabRepos.RemoveDerechoHabiente(id);
        }


        public List<DERECHO_HABIENTE> GetFromDerechoHabienteByVinculoFam(string vinculo)
        {
            return derHabRepos.GetFromDerechoHabienteByVinculoFam(vinculo);
        }

        public List<DERECHO_HABIENTE> GetFromDerechoHabienteByDocumentoSust(string documento)
        {
            return derHabRepos.GetFromDerechoHabienteByDocumentoSust(documento);
        }


        public List<DERECHO_HABIENTE> GetFromDerechoHabienteByActico(string nombre, string vinculo, string documento, bool activo, bool constancia)
        {
            return derHabRepos.GetFromDerechoHabienteByActico(nombre, vinculo, documento, activo, constancia);
        }
    }
}
